const moment = require('moment');

module.exports = {
/**
   * 参数校验空(null)
   * @param {*} data 
   */
  async paramCheck(data) {
    console.info("Method=util.paramCheck()");
    let res = {};
    for(let key in data){
      if (data[key] == null || data[key].length <= 0) {
        res.code=-1
        res.meg=key + '-是必须的';
        res.status=0;
        return res;
      }
    }
  },

  /**
   * 获取n天后的开始时间
   */
  async getTimeByDay(days) {
    let date = new Date();
    if (days == 0) {
      date.setHours(date.getHours() + 8);
      let current_time = moment(date).format('YYYY-MM-DD') + ' 00:00:00';
      return current_time;
    }else{
      date.setHours(date.getHours() + 8);
      date.setTime(date.getTime() + (24 * 60 * 60 * 1000) * days);
      let current_time = moment(date).format('YYYY-MM-DD') + ' 00:00:00';
      return current_time;
    }
  },

  /**
   * 获取当前北京时间 含时分秒
   * 格式: YYYY-MM-DD HH:mm:ss
   */
  async getNowTime() {
    console.info("Method=util.getNowTime()");
    let date = new Date();
    date.setHours(date.getHours() + 8);
    let current_time =  moment(date).format('YYYY-MM-DD HH:mm:ss');
    return current_time;
  },
  
  /**
   * 获取当前北京时间
   * 格式: YYYY-MM-DD
   */
  async getNowDate() {
    console.info("Method=util.getNowDate()");
    let date = new Date();
    date.setHours(date.getHours() + 8);
    let current_time =  moment(date).format('YYYY-MM-DD');
    return current_time;
  },

  /**
   * 格式化时间
   * 格式: YYYY-MM-DD
   */
  async getFormatDate(time) {
    console.info("Method=util.getNowDate()");
    let current_time =  moment(time).format('YYYY-MM-DD');
    return current_time;
  },

  /**
   * 获取随机数
   * @param {*} n 随机数间的最小值
   * @param {*} m 取数范围
   */
  async getRandom(n,m) {
     return Math.floor(Math.random()*(m-n+1)+n);
  },
  
  /**
   * 判断当前时间是否在某个时间段内
   * @param {*} start_time 开始时间 YYYY-MM-DD HH:mm:ss
   * @param {*} end_time 结束时间 YYYY-MM-DD HH:mm:ss
   */
  async isBetweenNowTime(start_time,end_time){
    let now_time = Date.parse(await this.getNowTime());
    
    if (now_time >= Date.parse(start_time) && now_time <= Date.parse(end_time)) {
      return true;
    }else{
      return false;
    }
  },

  /**
   * 判断一组时间按天为单位是否是连续的
   * @param {Array} time_array 时间数组, 长度(yyyy-mm-dd)至少为10
   */
  async isDaysContinuou(time_array){
    let sign = false;// 标记是否连续 false 不连续, true 连续
    if (time_array.length >= 2) {
      for (let i = 0; i < time_array.length-1; i ++) {
          let time1 = time_array[i].substring(0,10);
          let time2 = time_array[i+1].substring(0,10);
          let number = Date.parse(time2) - Date.parse(time1);
          if (Math.abs(number) == 86400000) {// 连续
              sign = true;
              break;
          }
      }
      return sign;
    }else{
      return false;
    }
  },
}